package com.cmc.cloud.cmclink.doc.service.impl;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.cmc.cloud.cmclink.doc.convert.SpecialCargoDgPackingConvert;
import com.cmc.cloud.cmclink.doc.entity.SpecialCargoDgPackingDO;
import com.cmc.cloud.cmclink.doc.mapper.SpecialCargoDgPackingMapper;
import com.cmc.cloud.cmclink.doc.service.SpecialCargoDgPackingService;
import com.cmc.cloud.cmclink.doc.vo.specialcargodgpackingvo.SpecialCargoDgPackingBaseVO;
import com.cmc.cloud.cmclink.doc.vo.specialcargodgpackingvo.SpecialCargoDgPackingPageReqVO;
import com.cmc.cloud.cmclink.doc.vo.specialcargodgpackingvo.SpecialCargoDgPackingUpdateReqVO;
import com.cmes.framework.common.pojo.PageResult;
import com.cmes.framework.mybatis.core.query.LambdaQueryWrapperX;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;

import javax.annotation.Resource;
import java.util.List;


/**
 * 特种货审批dg包装 Service 实现类
 *
 * @author 集运管理员
 */
@Service
@Validated
public class SpecialCargoDgPackingServiceImpl implements SpecialCargoDgPackingService {

    @Resource
    private SpecialCargoDgPackingMapper specialCargoDgPackingMapper;

    @Override
    public void createSpecialCargoDgPacking(SpecialCargoDgPackingBaseVO createReqVO) {
        // 插入
        SpecialCargoDgPackingDO specialCargoDgPacking = SpecialCargoDgPackingConvert.INSTANCE.convert(createReqVO);
        specialCargoDgPackingMapper.insert(specialCargoDgPacking);
    }

    @Override
    public void updateSpecialCargoDgPacking(SpecialCargoDgPackingUpdateReqVO updateReqVO) {
        // 更新
        SpecialCargoDgPackingDO updateObj = SpecialCargoDgPackingConvert.INSTANCE.convert(updateReqVO);
        specialCargoDgPackingMapper.updateById(updateObj);
    }

    @Override
    public void deleteSpecialCargoDgPacking(Long id) {

        // 删除
        specialCargoDgPackingMapper.deleteById(id);
    }

    @Override
    public SpecialCargoDgPackingDO getSpecialCargoDgPacking(Long id) {
        return specialCargoDgPackingMapper.selectById(id);
    }

    @Override
    public List<SpecialCargoDgPackingDO> getSpecialCargoDgPackingList(Long dgId) {
        return specialCargoDgPackingMapper.selectList(new LambdaQueryWrapperX<SpecialCargoDgPackingDO>().inIfPresent(SpecialCargoDgPackingDO::getDgId, dgId));
    }

    @Override
    public PageResult<SpecialCargoDgPackingDO> getSpecialCargoDgPackingPage(SpecialCargoDgPackingPageReqVO reqVO) {
        IPage<SpecialCargoDgPackingDO> page = Page.of(reqVO.getPageNo(), reqVO.getPageSize());

        IPage<SpecialCargoDgPackingDO> result = specialCargoDgPackingMapper.selectPageList(page, reqVO);
        return new PageResult<SpecialCargoDgPackingDO>(result.getRecords(), result.getTotal());
    }
}
